package main

import (
	"OldPackageTest/c_grpc_develop/h_grpc_error_test/proto"
	"context"
	"net"
	"time"

	"google.golang.org/grpc"
)

type Server struct {
	proto.UnimplementedGreeterServer
}

func (s *Server) SayHello(ctx context.Context, request *proto.HelloRequest) (*proto.HelloReply,
	error) {
	//return nil, status.Errorf(codes.NotFound, "记录未找到：%s", request.Name)
	time.Sleep(5 * time.Second)
	return &proto.HelloReply{
		Message: "hello " + request.Name,
	}, nil
}

func main() {
	/*
		server端 最好是帮我们生成接口, 我们只需要去每个接口种实现对应的业务逻辑就行了
		client端 需要帮我们生成对应的方法, 同时将这个方法都绑定到一个结构体上, 生成的时候我们可能需要传参数, ip:port
		java
	*/
	g := grpc.NewServer()
	proto.RegisterGreeterServer(g, &Server{})
	lis, err := net.Listen("tcp", "0.0.0.0:50051")
	if err != nil {
		panic("failed to listen:" + err.Error())
	}
	err = g.Serve(lis)
	if err != nil {
		panic("failed to start grpc:" + err.Error())
	}
}
